package models

import (
	"time"
	"tuowei.com/cmd/migrate/migration/models"
	common "tuowei.com/common/models"
)

type SysOfflineCourseList struct {
	CourseId   int       `json:"course_id" comment:"课程ID"` // 课程ID
	CourseType string    `json:"course_type" gorm:"-"`
	SerialNum  string    `json:"serial_num" comment:"课程编号"` // 课程编号
	Subject    string    `json:"subject" comment:"科目"`      // 科目
	Name       string    `json:"name" comment:"课程名称"`       // 课程名称
	Cover      string    `json:"cover" comment:"封面"`        // 封面
	Price      float64   `json:"price" comment:"价格"`        // 价格
	Sales      int       `json:"sales" comment:"销量"`        // 销量
	Status     int       `json:"status" comment:"状态"`
	ClassType  string    `json:"class_type" comment:"班级类型"` //初级、中级、高级
	Province   string    `json:"province" comment:"适用地区"`   //适用地区
	Creator    string    `json:"creator" gorm:"index;comment:创建者"`
	CreatedAt  time.Time `json:"created_at" gorm:"comment:创建时间"`
}

type SysOfflineCourseGetDetail struct {
	CourseId     int          `json:"course_id" gorm:"primaryKey;autoIncrement;comment:主键编码"` // 课程ID
	CourseType   string       `json:"course_type" gorm:"-"`
	Lecture      SysLecturer  `json:"lecture" gorm:"-"`
	OfflineStep1 OfflineStep1 `json:"offline_step1" gorm:"-"`
	OfflineStep2 OfflineStep2 `json:"offline_step2" gorm:"-"`
	common.ControlBy
	models.ModelTime
}

type OfflineStep1 struct {
	SerialNum      string  `json:"serial_num" comment:"课程编号"`                                    // 课程编号
	Subject        string  `json:"subject" comment:"科目" vd:"@:len($)>0; msg:'请选择科目'"`            // 科目
	Name           string  `json:"name" comment:"课程名称" vd:"@:len($)>0; msg:'课程名称不能为空'"`          // 课程名称
	Cover          string  `json:"cover" comment:"封面" vd:"@:len($)>0; msg:'请上传课程封面'"`            // 封面
	Outline        string  `json:"outline" comment:"大纲" vd:"@:len($)>0; msg:'请上传课程大纲'"`          //大纲
	Price          float64 `json:"price" comment:"价格" vd:"$>0; msg:'请填写课程价格'"`                   // 价格
	Introduction   string  `json:"introduction" comment:"课程简介" vd:"@:len($)>0; msg:'请用一句话介绍课程'"` //课程简介
	CourseDuration int     `json:"course_duration" comment:"课程时长" vd:"$>0; msg:'请输入课程时长'"`       //课程时长
	Status         int     `json:"status" comment:"状态"`
	PublicRange    string  `json:"public_range" comment:"公开范围"`
	Province       string  `json:"province" comment:"适用地区" vd:"@:len($)>0; msg:'请选择适用区域'"` //适用区域
	LBTUrl         string  `json:"lbt_url" gorm:"type:varchar(5000);comment:轮播图地址"`
}

type OfflineStep2 struct {
	LecturerId        int              `json:"lecturer_id" comment:"讲师" vd:"$>0; msg:'请选择讲师'"`
	ClassType         string           `json:"class_type" comment:"班级类型" vd:"@:len($)>0; msg:'请选择班级类型'"` //初级、中级、高级
	BelongingProvince int              `json:"belonging_province" comment:"所属大区" vd:"$>0; msg:'请选择所属大区'"`
	City              int              `json:"city" gorm:"type:int(5);not null;comment:所属城市" vd:"$>0; msg:'请选择所属城市'"`
	Area              int              `json:"area" gorm:"type:int(5);not null;comment:所属地区" vd:"$>0; msg:'请选择所属地区'"`
	DeptId            int              `json:"dept_id" comment:"教学点" vd:"$>0; msg:'请选择所属教学点'"` //教学点
	Explain           string           `json:"explain" comment:"食宿说明"`
	CourseDesExplain  string           `json:"course_des_explain" comment:"课程详细说明" vd:"@:len($)>0; msg:'请填写课程详细说明'"`
	BuyPush           int              `json:"buy_push" comment:"购买推送消息" vd:"$>0; msg:'请选择购买推送信息'"`
	TrainingDays      int              `json:"training_days" comment:"集训天数"`
	BindingOnlineId   []int            `json:"binding_online_id" gorm:"-"` //绑定的线上课程id
	Telephone         string           `json:"telephone"`
	CourseGift        []*SysCourseGift `json:"course_gift" comment:"赠送数组"`
	ContactUrl        string           `json:"contact_url" comment:"合同地址" binding:"required"` // 电子合同demo
	FileId            string           `json:"file_id" comment:"e电签模板文件id"`
	Qq                string           `json:"qq" comment:"comment:客服qq号"`
}

type SysOfflineCourse struct {
	CourseId       int         `json:"course_id" gorm:"primaryKey;autoIncrement;comment:主键编码"` // 课程ID
	SerialNum      string      `json:"serial_num" comment:"课程编号"`                              // 课程编号
	Subject        string      `json:"subject" comment:"科目"`                                   // 科目
	ClassType      string      `json:"class_type" comment:"班级类型"`                              //初级、中级、高级
	Province       string      `json:"province" comment:"适用地区"`                                //适用地区
	Name           string      `json:"name" comment:"课程名称"`                                    // 课程名称
	Cover          string      `json:"cover" comment:"封面"`                                     // 封面
	Outline        string      `json:"outline" comment:"大纲"`                                   //大纲
	Price          float64     `json:"price" comment:"价格"`                                     // 价格
	Sales          int         `json:"sales" comment:"销量"`                                     // 销量
	Introduction   string      `json:"introduction" comment:"课程简介"`                            //课程简介
	CourseDuration int         `json:"course_duration" comment:"课程时长"`                         //课程时长
	LecturerId     int         `json:"lecturer_id" gorm:"type:int(10);comment:班主任ID"`
	Lecture        SysLecturer `json:"lecture" gorm:"foreignKey:lecturer_id"`
	//OnlineClassId  int     `json:"online_class_id" gorm:"type:tinyint(2);comment:网课班级ID"` //网课班级ID
	//OnlineClass    string  `json:"online_class" gorm:"type:varchar(20);comment:网课班级"`     //网课班级
	//Contacts       string  `json:"contacts" gorm:"type:varchar(50);comment:班主任联系"`        //班主任联系
	BelongingProvince int            `json:"belonging_province" gorm:"type:int(5);not null;comment:所属大区"`
	City              int            `json:"city" gorm:"type:int(5);not null;comment:所属城市"`
	Area              int            `json:"area" gorm:"type:int(5);not null;comment:所属地区" vd:"$>0; msg:'请选择所属地区'"`
	DeptId            int            `json:"dept_id" gorm:"type:smallint(5);not null;comment:教学点"` //教学点
	Explain           string         `json:"explain" gorm:"type:varchar(50);comment:食宿说明"`
	CourseDesExplain  string         `json:"course_des_explain" gorm:"type:text;comment:课程详细说明"`
	BindingOnlineId   string         `json:"binding_online_id" gorm:"varchar(10);comment:绑定的网课ID"`
	TrainingDays      int            `json:"training_days" gorm:"smallint(5);comment:集训天数"`
	BuyPush           int            `json:"buy_push" gorm:"type:int(10);comment:购买推送消息"`
	Status            int            `json:"status" comment:"状态"`
	Telephone         string         `json:"telephone"`
	PublicRange       string         `json:"public_range" gorm:"type:varchar(11); comment:公开范围"`
	LBTUrl            string         `json:"lbt_url" gorm:"type:varchar(5000);comment:轮播图地址"`
	CourseType        string         `json:"course_type" gorm:"-"`
	ContactUrl        string         `json:"contact_url" comment:"合同地址" binding:"required"`
	FileId            string         `json:"file_id" comment:"e电签模板文件id"`
	ESignContract     *ESignContract `json:"e_sign_contract" gorm:"foreignKey:file_id;references:template_id"`
	Qq                string         `json:"qq" gorm:"type:varchar(32);not null;default:'';comment:客服qq号"`
	common.ControlBy
	models.ModelTime
}

func (SysOfflineCourse) TableName() string {
	return "sys_offline_course"
}

func (e *SysOfflineCourse) Generate() common.ActiveRecord {
	o := *e
	return &o
}

func (e *SysOfflineCourse) GetId() interface{} {
	return e.CourseId
}
